package com.torry.edss.integration.feign.cls.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;


/**
 * 市场数据总览
 *
 * @author torry.wang
 */
@Data
public class ClsRealTimeMarketDataResponse {
    /**
     * 指数行情列表
     */
    @JsonProperty("index_quote")
    private List<IndexQuote> indexQuote;

    /**
     * 涨跌分布统计
     */
    @JsonProperty("up_down_dis")
    private UpDownDis upDownDis;

    /**
     * 今日上市新股列表
     */
    @JsonProperty("listed_today")
    private List<ListedToday> listedToday;

    /**
     * 今日可申购新股列表
     */
    @JsonProperty("purchase_today")
    private List<PurchaseToday> purchaseToday;

    /**
     * 指数行情数据
     */
    @Data
    public static class IndexQuote {
        /**
         * 指数代码（如：sh000001）
         */
        @JsonProperty("secu_code")
        private String secuCode;

        /**
         * 指数名称（如：上证指数）
         */
        @JsonProperty("secu_name")
        private String secuName;

        /**
         * 最新价
         */
        @JsonProperty("last_px")
        private Double lastPx;

        /**
         * 涨跌幅（比例，如-0.0007表示-0.07%）
         */
        @JsonProperty("change")
        private Double change;

        /**
         * 涨跌额（如-2.23表示下跌2.23点）
         */
        @JsonProperty("change_px")
        private Double changePx;

        /**
         * 上涨家数
         */
        @JsonProperty("up_num")
        private Integer upNum;

        /**
         * 下跌家数
         */
        @JsonProperty("down_num")
        private Integer downNum;

        /**
         * 平盘家数
         */
        @JsonProperty("flat_num")
        private Integer flatNum;

        /**
         * 分时线数据（示例中为null）
         */
        @JsonProperty("tline")
        private Object tline;
    }

    /**
     * 涨跌分布统计
     */
    @Data
    public static class UpDownDis {

        /**
         * 上涨数量（板块/个股）
         */
        @JsonProperty("up_num")
        private Integer upNum;

        /**
         * 下跌数量（板块/个股）
         */
        @JsonProperty("down_num")
        private Integer downNum;

        /**
         * 平均涨幅, 涨跌幅中位数
         */
        @JsonProperty("average_rise")
        private Double averageRise;

        /**
         * 上涨总数
         */
        @JsonProperty("rise_num")
        private Integer riseNum;

        /**
         * 下跌总数
         */
        @JsonProperty("fall_num")
        private Integer fallNum;

        /**
         * 跌幅≥10%的数量
         */
        @JsonProperty("down_10")
        private Integer down10;
        /**
         * 跌幅≥8%的数量
         */
        @JsonProperty("down_8")
        private Integer down8;
        /**
         * 跌幅≥6%的数量
         */
        @JsonProperty("down_6")
        private Integer down6;
        /**
         * 跌幅≥4%的数量
         */
        @JsonProperty("down_4")
        private Integer down4;

        /**
         * 跌幅≥2%的数量
         */
        @JsonProperty("down_2")
        private Integer down2;

        /**
         * 平盘数量
         */
        @JsonProperty("flat_num")
        private Integer flatNum;

        /**
         * 涨幅≥2%的数量
         */
        @JsonProperty("up_2")
        private Integer up2;

        /**
         * 涨幅≥4%的数量
         */
        @JsonProperty("up_4")
        private Integer up4;

        /**
         * 涨幅≥6%的数量
         */

        @JsonProperty("up_6")
        private Integer up6;

        /**
         * 涨幅≥8%的数量
         */
        @JsonProperty("up_8")
        private Integer up8;

        /**
         * 涨幅≥10%的数量
         */
        @JsonProperty("up_10")
        private Integer up10;

        /**
         * 停牌数量
         */
        @JsonProperty("suspend_num")
        private Integer suspendNum;

        /**
         * 状态标识（true表示数据有效）
         */
        @JsonProperty("status")
        private Boolean status;
    }

    /**
     * 今日上市新股信息
     */
    @Data
    public static class ListedToday {
        /**
         * 股票名称（如：N众捷）
         */
        @JsonProperty("secu_name")
        private String secuName;

        /**
         * 股票代码（如：sz301560）
         */
        @JsonProperty("secu_code")
        private String secuCode;

        /**
         * 发行价（单位：元）
         */
        @JsonProperty("ipo_price")
        private Double ipoPrice;

        /**
         * 发行市盈率
         */
        @JsonProperty("ipo_pe")
        private Double ipoPe;

        /**
         * 申购上限（单位：股）
         */
        @JsonProperty("allot_max")
        private Integer allotMax;

        /**
         * 中签率（比例，如0.0179表示1.79%）
         */
        @JsonProperty("lot_rate")
        private Double lotRate;

        /**
         * 发行总量（单位：股）
         */
        @JsonProperty("issue_vol")
        private Integer issueVol;
    }


    /**
     * 今日可申购新股
     */
    @Data
    public static class PurchaseToday {

        @JsonProperty(value = "listed_date")
        private String listedDate;

        @JsonProperty(value = "secu_name")
        private String name;

        @JsonProperty(value = "secu_code")
        private String code;

        @JsonProperty(value = "SecuCode")
        private String fullCode;

        /**
         * IPO发行价格（单位：元）
         */
        @JsonProperty(value = "ipo_price")
        private String ipoPrice;

        /**
         * IPO发行市盈率
         */
        @JsonProperty(value = "ipo_pe")
        private Double ipoPe;

        /**
         * 最大申购数量（单位：股）
         */
        @JsonProperty(value = "allot_max")
        private Double allotMax;

        /**
         * 中签率
         */
        @JsonProperty(value = "lot_rate")
        private String lotRate;
    }
}